package id.net.iconpln.bb.client.model;

import id.net.iconpln.bb.client.view.PageBbApprovalPengajuanJadwal;
import id.net.iconpln.bb.client.view.PageBbBaBongkar;
import id.net.iconpln.bb.client.view.PageBbJadwal;
import id.net.iconpln.bb.client.view.PageBbListKlarifikasi;
import id.net.iconpln.bb.client.view.PageBbListKonfirmKirim;
import id.net.iconpln.bb.client.view.PageBbMasterPemasok;
import id.net.iconpln.bb.client.view.PageBbMasterPembangkit;
import id.net.iconpln.bb.client.view.PageBbMasterSurveyor;
import id.net.iconpln.bb.client.view.PageBbMasterTransportir;
import id.net.iconpln.bb.client.view.PageBbPJBB;
import id.net.iconpln.bb.client.view.PageBbPJBBAmandemen;
import id.net.iconpln.bb.client.view.PageBbPJBB_REE;
import id.net.iconpln.bb.client.view.PageBbPakai;
import id.net.iconpln.bb.client.view.PageBbPasokan;
import id.net.iconpln.bb.client.view.PageBbPencatatanPemakaian;
import id.net.iconpln.bb.client.view.PageBbPencatatanPenerimaan;
import id.net.iconpln.bb.client.view.PageBbPencatatanPengeluaran;
import id.net.iconpln.bb.client.view.PageBbPencatatanProduksi;
import id.net.iconpln.bb.client.view.PageBbPengajuanPermintaanHarian;
import id.net.iconpln.bb.client.view.PageBbPengendalianBaStFob;
import id.net.iconpln.bb.client.view.PageBbPengendalianBlackList;
import id.net.iconpln.bb.client.view.PageBbPengendalianPeringatanPemutusan;
import id.net.iconpln.bb.client.view.PageBbPerhitunganStock;
import id.net.iconpln.bb.client.view.PageBbPortBongkar;
import id.net.iconpln.bb.client.view.PageBbPortKedatangan;
import id.net.iconpln.bb.client.view.PageBbPortPencatatan;
import id.net.iconpln.bb.client.view.PageBbPortPengiriman;
import id.net.iconpln.bb.client.view.PageBbPortSampling;
import id.net.iconpln.bb.client.view.PageBbPortSandar;
import id.net.iconpln.bb.client.view.PageBbRakor_PKS;
import id.net.iconpln.bb.client.view.PageBbRakor_User;
import id.net.iconpln.bb.client.view.PageBbRencanaProduksi;
import id.net.iconpln.bb.client.view.PageBbStockOpname;
import id.net.iconpln.bb.client.view.PageBbTerima;
import id.net.iconpln.bb.client.view.PageBbTransportJadwal;
import id.net.iconpln.bb.client.view.PageBbTransportKontrak;
import id.net.iconpln.bb.client.view.PageBbTransportManuver;
import id.net.iconpln.bb.client.view.PageBbTransportPasokan;
import id.net.iconpln.bb.client.view.PageBbTransportPengajuanJadwal;
import id.net.iconpln.bb.client.view.PageBbTransportPengiriman;
import id.net.iconpln.bb.client.view.PageBbTransportSampling;
import id.net.iconpln.bb.client.view.PageBbTransportShipment;
import id.net.iconpln.bb.client.view.PageBbTransportSurveyor;
import id.net.iconpln.bb.client.view.PageBbTransportTransportir;
import id.net.iconpln.bb.client.view.PageBbTransportloading;
import id.net.iconpln.bb.client.view.PageBbUjiSampling;
import id.net.iconpln.bb.client.view.PageMonitoringPemakaian;
import id.net.iconpln.bb.client.view.PageRekapBbBACetak;
import id.net.iconpln.bb.client.view.PageRekapBbBerth;
import id.net.iconpln.bb.client.view.PageRekapBbEvaluasiKontrak;
import id.net.iconpln.bb.client.view.PageRekapBbInvoice;
import id.net.iconpln.bb.client.view.PageRekapBbKalorPerBulan;
import id.net.iconpln.bb.client.view.PageRekapBbKalorPerPemasok;
import id.net.iconpln.bb.client.view.PageRekapBbLaporanUnit;
import id.net.iconpln.bb.client.view.PageRekapBbMonKwalitas;
import id.net.iconpln.bb.client.view.PageRekapBbMonKwalitasBB;
import id.net.iconpln.bb.client.view.PageRekapBbMonTahunan;
import id.net.iconpln.bb.client.view.PageRekapBbPenerimaanBbSurveyor;
import id.net.iconpln.bb.client.view.PageRekapBbPenerimaan_Pemakaian_Persediaan;
import id.net.iconpln.bb.client.view.PageRekapBbPerbandinganAnalisaKualitas;
import id.net.iconpln.bb.client.view.PageRekapBbPerbandinganPenerimaanBb;
import id.net.iconpln.bb.client.view.PageRekapBbPerbandinganPenerimaanBulanan;
import id.net.iconpln.bb.client.view.PageRekapBbRealBongkar;
import id.net.iconpln.bb.client.view.PageRekapBbRealBongkarBulanan;
import id.net.iconpln.bb.client.view.PageRekapBbRealBulanan;
import id.net.iconpln.bb.client.view.PageRekapBbRealPembongkaran;
import id.net.iconpln.bb.client.view.PageRekapBbRealPengapalanBb;
import id.net.iconpln.bb.client.view.PageRekapBbRealTahunan;
import id.net.iconpln.bb.client.view.PageRekapBbRekapAnalisaSeluruhKualitas;
import id.net.iconpln.bb.client.view.PageRekapBbRekapKontrakPerPemasok;
import id.net.iconpln.bb.client.view.PageRekapBbRekapPenerimaan;
import id.net.iconpln.bb.client.view.PageRekapBbRekapPenerimaanBb;
import id.net.iconpln.bb.client.view.PageRekapBbSemuaKontrakTahunan;
import id.net.iconpln.bb.client.view.secman.PageBbMasterGroup;
import id.net.iconpln.bb.client.view.secman.PageBbMasterModul;
import id.net.iconpln.bb.client.view.secman.PageBbMasterUser;
import id.net.iconpln.bb.client.view.secman.PageBbUserGroup;

import java.util.ArrayList;
import java.util.List;

import com.extjs.gxt.ui.client.Registry;
import com.extjs.gxt.ui.client.data.BaseTreeModel;
import com.extjs.gxt.ui.client.data.ModelData;
import com.extjs.gxt.ui.client.data.TreeModel;
import com.extjs.gxt.ui.client.widget.MessageBox;
import com.google.gwt.core.client.GWT;

public class NavigatorTreeModel extends BaseTreeModel{
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	protected List<Entry> entries = new ArrayList<Entry>();
	
	
	  public NavigatorTreeModel() {
		GWT.log("NavigationTreeModel()",null);  
		
//		String mdl = Registry.get("isModule");
		String mdl = "TRANSPORT";
		if (mdl.equals("PERENCANAAN")){
		    
		Category iplan = new Category("Perencanaan");
		iplan.addEntry("Data RKAP", new PageBbRencanaProduksi());
	    add(iplan);
	    
	    Category icontract = new Category("Data Pengadaan");
	    icontract.addEntry("Kontrak PJBB", new PageBbPJBB()); // read only
	    icontract.addEntry("Kontrak Amandemen", new PageBbPJBBAmandemen()); //read only
	    add(icontract);
	    
	    Category icontrol = new Category("Data Pengendalian");
	    icontrol.addEntry("Jadwal Pengiriman", new PageBbJadwal());
	    icontrol.addEntry("Daftar Pasokan", new PageBbPasokan());
	    add(icontrol);
	    
	    Category imeeting = new Category("Rapat Koordinasi");
	    imeeting.addEntry("Rapat Koordinasi", new PageBbRakor_PKS());
	    
	    add(imeeting);
	    
		Category istock = new Category("Informasi Stock");
		istock.addEntry("Stock Opname", new PageBbStockOpname());
		istock.addEntry("Informasi Stock", new PageBbPerhitunganStock());
		add(istock);
		
		}else if (mdl.equals("PENGENDALIAN")){
		    
				Category icontrol = new Category("Data Pengendalian");
			    icontrol.addEntry("Daftar Pengiriman", new PageBbJadwal());
			    icontrol.addEntry("Daftar Pasokan", new PageBbPasokan());
			    icontrol.addEntry("Rapat Koordinasi", new PageBbRakor_PKS());
			    icontrol.addEntry("Peringatan & Pemutusan", new PageBbPengendalianPeringatanPemutusan());
			    icontrol.addEntry("Black List", new PageBbPengendalianBlackList());
			    icontrol.addEntry("BA Serah Terima (FOB)", new PageBbPengendalianBaStFob());
			    add(icontrol);
		    
				Category iplan = new Category("Perencanaan");
				iplan.addEntry("Data RKAP", new PageBbRencanaProduksi());
			    add(iplan);
			    
			    Category icontract = new Category("Data Kontrak");
			    icontract.addEntry("Kontrak PJBB", new PageBbPJBB());
			    icontract.addEntry("Kontrak Amandemen", new PageBbPJBBAmandemen());	
			    add(icontract);
			    
			    
//			    Category imeeting = new Category("Rapat Koordinasi");
//			    imeeting.addEntry("Rapat Koordinasi", new PageBbRakor_PKS());
//			    add(imeeting);
			    
//			    Category istock = new Category("Stock"); //USER GUDANG
//			    istock.addEntry("Verifikasi Hasil Uji Surveyor", new PageBbVerifikasihasilujisurveyor());
//			    istock.addEntry("Pencatatan Penerimaan", new PageBbPencatatanPenerimaan());
//			    istock.addEntry("Pengajuan Permintaan Harian", new PageBbPengajuanPermintaanHarian()); MASUK KE OPERATOR
//			    istock.addEntry("Pencatatan Pengeluaran", new PageBbPencatatanPengeluaran());
//			    istock.addEntry("Informasi Stock", new PageBbPerhitunganStock());
//			    istock.addEntry("Terima Pengajuan Permintaan Harian", new PageBbTerimaPengajuanPermintaanHarian());
//			    add(istock);
			    
				Category istock = new Category("Informasi Stock");
				istock.addEntry("Stock Opname", new PageBbStockOpname());
				istock.addEntry("Informasi Stock", new PageBbPerhitunganStock());
				add(istock);
				
			}else if (mdl.equals("PENGADAAN")){
			    
				Category icontract = new Category("Data Kontrak");
			    icontract.addEntry("Kontrak PJBB", new PageBbPJBB());
			    icontract.addEntry("Kontrak Amandemen", new PageBbPJBBAmandemen());			    
			    add(icontract);
			    
					
				Category iplan = new Category("Perencanaan");
				iplan.addEntry("Data RKAP", new PageBbRencanaProduksi());
			    add(iplan);
			    
			    
			    Category icontrol = new Category("Data Pengendalian");
			    icontrol.addEntry("Daftar Pengiriman", new PageBbJadwal());
			    icontrol.addEntry("Daftar Pasokan", new PageBbPasokan());
			    icontrol.addEntry("Rapat Koordinasi", new PageBbRakor_PKS());
			    icontrol.addEntry("Peringatan & Pemutusan", new PageBbPengendalianPeringatanPemutusan());
			    icontrol.addEntry("Black List", new PageBbPengendalianBlackList());
			    icontrol.addEntry("BA Serah Terima (FOB)", new PageBbPengendalianBaStFob());
			    add(icontrol);
			    
			    Category imeeting = new Category("Rapat Koordinasi");
			    imeeting.addEntry("Rapat Koordinasi", new PageBbRakor_User());
			    add(imeeting);
			    
				Category istock = new Category("Informasi Stock");
				istock.addEntry("Stock Opname", new PageBbStockOpname());
				istock.addEntry("Informasi Stock", new PageBbPerhitunganStock());
				add(istock);
			 
			 }else if (mdl.equals("TRANSPORT")){
		    
			 Category tr = new Category("Pengajuan");
			 tr.addEntry("Jadwal", new PageBbTransportPengajuanJadwal());
			 tr.addEntry("Shipment", new PageBbTransportShipment());
			 tr.addEntry("Sampling", new PageBbTransportSampling());			
			 tr.addEntry("Loading", new PageBbTransportloading());
			 tr.addEntry("Rapat Koordinasi", new PageBbRakor_User());
			 add(tr);
			 Category kr = new Category("Data Pengiriman");
			 kr.addEntry("Daftar Pengiriman", new PageBbTransportPengiriman());
			 kr.addEntry("Jadwal Pengiriman", new PageBbTransportJadwal());
			 kr.addEntry("Data Pasokan", new PageBbTransportPasokan());
			 add(kr);
			 Category knr = new Category("Data Kontrak");
			 knr.addEntry("Daftar Kontrak", new PageBbTransportKontrak());
			 add(knr);
			 Category trans = new Category("Data Transportir");
			 trans.addEntry("Daftar Transportir", new PageBbTransportTransportir());			 
			 add(trans);
			 Category svy = new Category("Data Surveyor");
			 svy.addEntry("Daftar Surveyor", new PageBbTransportSurveyor());			 
			 add(svy);
			 Category mvr = new Category("Manuver Kapal");
			 mvr.addEntry("Data Manuver", new PageBbTransportManuver());
//			 mvr.addEntry("Rescheduling", new PageBbTransportReschedule());
			 add(mvr);
			 
			}else if (mdl.equals("OPERATOR")){
			    
				Category istock = new Category("Pemakaian"); //USER GUDANG
			    istock.addEntry("Pengajuan Pemakaian", new PageBbPengajuanPermintaanHarian()); 
			    istock.addEntry("Pencatatan Pemakaian", new PageBbPencatatanPemakaian());
			    istock.addEntry("Monitoring Pemakaian", new PageMonitoringPemakaian());
			    istock.addEntry("Pencatatan Produksi", new PageBbPencatatanProduksi());
			    add(istock);
			    
				Category xistock = new Category("Informasi Stock");
				xistock.addEntry("Stock Opname", new PageBbStockOpname());
				xistock.addEntry("Informasi Stock", new PageBbPerhitunganStock());
				add(xistock);  
			 
			 }else if (mdl.equals("GUDANG")){
				    
				    Category istock = new Category("Stock"); //USER GUDANG
//				    istock.addEntry("Verifikasi Hasil Uji Surveyor", new PageBbVerifikasihasilujisurveyor());
				    istock.addEntry("Pencatatan Penerimaan", new PageBbPencatatanPenerimaan());
//				    istock.addEntry("Pengajuan Permintaan Harian", new PageBbPengajuanPermintaanHarian()); MASUK KE OPERATOR
				    istock.addEntry("Pencatatan Pengeluaran", new PageBbPencatatanPengeluaran());
				    istock.addEntry("Informasi Stock", new PageBbPerhitunganStock());
//				    istock.addEntry("Terima Pengajuan Permintaan Harian", new PageBbTerimaPengajuanPermintaanHarian());
				    add(istock);
				    
					Category xistock = new Category("Informasi Stock");
					xistock.addEntry("Stock Opname", new PageBbStockOpname());
					xistock.addEntry("Informasi Stock", new PageBbPerhitunganStock());
					add(xistock);
				 

	    }else if (mdl.equals("PORT")){
		    Category Mdermaga = new Category("Data Pengiriman");
		    	Mdermaga.addEntry("Daftar Pengiriman", new PageBbPortPengiriman());		    	
		    add(Mdermaga);
		    Category ap = new Category("Aktivitas Dermaga");
	    	ap.addEntry("Kedatangan", new PageBbPortKedatangan());
	    	ap.addEntry("Sandar", new PageBbPortSandar());
	    	ap.addEntry("Bongkar", new PageBbPortBongkar());
	    	add(ap);
	    	Category ab = new Category("Aktivitas Bongkar");
	    	ab.addEntry("Pencatatan Bongkar", new PageBbPortPencatatan());
	    	ab.addEntry("Sampling", new PageBbPortSampling());
//	    	ap.addEntry("Data Bongkar", new PageBbPortBongkar());
	    	add(ab);
	    	
			Category istock = new Category("Informasi Stock");
			istock.addEntry("Stock Opname", new PageBbStockOpname());
			istock.addEntry("Informasi Stock", new PageBbPerhitunganStock());
			add(istock);
	    	
	    	
	    }else if (mdl.equals("ADMINISTRASI")){	    	
		    Category adm = new Category("Administrasi");
		    adm.addEntry("Approval Jadwal Pengiriman", new PageBbApprovalPengajuanJadwal());		    
		    adm.addEntry("Approval Pengiriman", new PageBbListKonfirmKirim());
		    adm.addEntry("BA Penerimaan ", new PageBbTerima());
//		    adm.addEntry("BA Pembongkaran", new PageBbBaBongkar());
		    adm.addEntry("Pemakaian", new PageBbPakai());
//		    adm.addEntry("Daftar Konfirmasi kirim", new PageBbListKonfirmKirim());
		    adm.addEntry("Rapat Koordinasi", new PageBbRakor_User());
		    add(adm);
		    
		    Category sur = new Category("Sampling");
		    sur.addEntry("Uji Sampling", new PageBbUjiSampling());
//		    sur.addEntry("Daftar Klarifikasi", new PageBbListKlarifikasi());
		    add(sur);
		    
			Category em = new Category("Monitoring");
	    	em.addEntry("kualitas (pemasok)", new PageRekapBbMonKwalitas());
	    	em.addEntry("kualitas batubara", new PageRekapBbMonKwalitasBB());
	    	em.addEntry("Evaluasi Kontrak", new PageRekapBbEvaluasiKontrak());
	    	em.addEntry("Kontrak tahunan", new PageRekapBbMonTahunan());
	    	em.addEntry("Realisasi kontrak Bulanan", new PageRekapBbRealBulanan());
	    	em.addEntry("Realisasi kontrak Tahunan", new PageRekapBbRealTahunan());
	    	em.addEntry("Rekap Kontrak (per pemasok)", new PageRekapBbRekapKontrakPerPemasok());
		    
	    	em.addEntry("Rekap Penerimaan Batubara", new PageRekapBbRekapPenerimaanBb());
	    	em.addEntry("Semua Kontrak Tahunan", new PageRekapBbSemuaKontrakTahunan());

	    	em.addEntry("Kalor per pemasok", new PageRekapBbKalorPerPemasok());
	    	em.addEntry("Kalor perbulan", new PageRekapBbKalorPerBulan());
//		    kb.addEntry("Kualitas Batubara", new PageTest());
	    	em.addEntry("Perbandingan analisa kualitas", new PageRekapBbPerbandinganAnalisaKualitas());
	    	em.addEntry("Rekap analisa seluruh kualitas", new PageRekapBbRekapAnalisaSeluruhKualitas());

	    	em.addEntry("Realisasi pembongkaran", new PageRekapBbRealPembongkaran());
		    
	    	em.addEntry("Pebandingan penerimaan bulanan", new PageRekapBbPerbandinganPenerimaanBulanan());
	    	em.addEntry("Rekap Realisasi bongkar bulanan", new PageRekapBbRealBongkarBulanan());
		    em.addEntry("Penerimaan, pemakaian dan persediaan batubara", new PageRekapBbPenerimaan_Pemakaian_Persediaan());
		    
	    	add(em);
		   
//		    Category kontrak = new Category("Kontrak");
//		    kontrak.addEntry("Evaluasi Kontrak", new PageRekapBbEvaluasiKontrak());
//		    kontrak.addEntry("Main Kontrak", new PageTest());
//		    kontrak.addEntry("Monitoring tahunan", new PageRekapBbMonTahunan());
//		    kontrak.addEntry("Realisasi Bulanan", new PageRekapBbRealBulanan());
//		    kontrak.addEntry("Realisasi Tahunan", new PageRekapBbRealTahunan());
//		    kontrak.addEntry("Rekap Kontrak (per pemasok)", new PageRekapBbRekapKontrakPerPemasok());
//		    kontrak.addEntry("Rekap Penerimaan Batubara", new PageRekapBbRekapPenerimaanBb());
//		    kontrak.addEntry("Semua Kontrak Tahunan", new PageRekapBbSemuaKontrakTahunan());
//		    add(kontrak);
		    
//		    Category pb = new Category("Persediaan batubara");
//		    pb.addEntry("Penerimaan, pemakaian dan persediaan batubara", new PageRekapBbPenerimaan_Pemakaian_Persediaan());
////		    pb.addEntry("Stok Opname", new PageTest());
//		    add(pb);
		    
//		    Category penerimaan = new Category("Penerimaan");
//		    penerimaan.addEntry("BBM BB surveyor", new PageRekapBbPenerimaanBbSurveyor());
//		    penerimaan.addEntry("Perbandingan perimaan batubara", new PageRekapBbPerbandinganPenerimaanBb());
//		    penerimaan.addEntry("Realisasi pengapalan batubara", new PageRekapBbRealPengapalanBb());//error
//		    penerimaan.addEntry("Rekap penerimaan", new PageRekapBbRekapPenerimaan());
//		    add(penerimaan);
		    
//		    Category kb = new Category("Kualitas Batubara");
//		    kb.addEntry("Kalor per pemasok", new PageRekapBbKalorPerPemasok());
//		    kb.addEntry("Kalor perbulan", new PageRekapBbKalorPerBulan());
////		    kb.addEntry("Kualitas Batubara", new PageTest());
//		    kb.addEntry("Perbandingan analisa kualitas", new PageRekapBbPerbandinganAnalisaKualitas());
//		    kb.addEntry("Rekap analisa seluruh kualitas", new PageRekapBbRekapAnalisaSeluruhKualitas());
//		    add(kb);
		    
//		    Category bongkar = new Category("Pembongkaran");
//		    bongkar.addEntry("Realisasi pembongkaran", new PageRekapBbRealPembongkaran());
//		    add(bongkar);
		    
//		    Category ba = new Category("Berita Acara");
//		    ba.addEntry("BA Cetak", new PageRekapBbBACetak());
////		    ba.addEntry("Berita Acara", new PageTest());
//		    add(ba);
		    
//		    Category performance = new Category("Performace");
//		    performance.addEntry("Berth", new PageRekapBbBerth());
//		    performance.addEntry("Realisasi pembongkaran", new PageRekapBbRealBongkar());
//		    performance.addEntry("Laporan unit", new PageRekapBbLaporanUnit());
//		    add(performance);	   	    
	    	
		    Category invoice = new Category("Pembayaran");
		    invoice.addEntry("Invoice", new PageRekapBbInvoice());
		    add(invoice);
		    
			Category istock = new Category("Informasi Stock");
			istock.addEntry("Stock Opname", new PageBbStockOpname());
			istock.addEntry("Informasi Stock", new PageBbPerhitunganStock());
			add(istock);
		    
//	    }else if (mdl.equals("PEMBAYARAN")){

    }

		
		Category MasterData = new Category("Master");
	    MasterData.addEntry("Pembangkit", new PageBbMasterPembangkit());	    
	    MasterData.addEntry("Pemasok", new PageBbMasterPemasok());	
	    MasterData.addEntry("Surveyor", new PageBbMasterSurveyor());
	    MasterData.addEntry("Transpotir", new PageBbMasterTransportir());
//	    MasterData.addEntry("User" , new PageBbMasterUser());
	    add(MasterData);
	    
	    Category Um = new Category("User Management");
	    	     Um.addEntry("Users", new PageBbMasterUser());
	    	     Um.addEntry("Groups", new PageBbMasterGroup());	    	     
	    	     Um.addEntry("User Group", new PageBbUserGroup());
	    	     Um.addEntry("Module", new PageBbMasterModul());
	    	     add(Um);	     

	    loadEntries(this);
	  }

	  public Entry findEntry(String name) {
	    if (get(name) != null) {
	      return (Entry) get(name);
	    }
	    for (Entry entry : getEntries()) {
	      if (name.equals(entry.getId())) {
	        return entry;
	      }
	    }
	    return null;
	  }

	  public List<Entry> getEntries() {
	    return entries;

	  }

	  private void loadEntries(TreeModel model) {
	    for (ModelData child : model.getChildren()) {
	      if (child instanceof Entry) {
	        entries.add((Entry) child);
	      } else if (child instanceof Category) {
	        loadEntries((Category)child);
	      }
	    }
	  }
	  private void m(){
		  MessageBox.alert("info","check this", null);
	  }
}

